package com.so.token.controller;

import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {

  /**
   * 登录
   * <a>
   *   http://localhost:8081/user/login?username=zhang&password=123456
   * </a>
   * @param username
   * @param password
   * @return
   */
  @GetMapping("/login")
  public SaResult doLogin(String username, String password){
    if("zhang".equals(username) && "123456".equals(password)){
      StpUtil.login(10001);
      // 第2步，获取 Token  相关参数
      SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
      // 第3步，返回给前端
      return SaResult.data(tokenInfo);
    }
    return SaResult.error();
  }

  /**
   * 查询登录状态，浏览器访问：
   * <a>
   *   http://localhost:8081/user/isLogin
   * </a>
   * @return
   */
  @RequestMapping("isLogin")
  public String isLogin() {
    return "当前会话是否登录：" + StpUtil.isLogin();
  }

  /**
   * 查询 Token 信息
   * <a>
   *   http://localhost:8081/user/tokenInfo
   * </a>
   * @return
   */
  @RequestMapping("tokenInfo")
  public SaResult tokenInfo() {
    return SaResult.data(StpUtil.getTokenInfo());
  }

  /**
   * 注销登录
   * <a>
   *   http://localhost:8081/user/logout
   * </a>
   * @return
   */
  @RequestMapping("logout")
  public void logout() {
    StpUtil.logout();
  }

  /**
   * 获得用户所有角色
   * <a>
   *   http://localhost:8081/user/roles
   * </a>
   * @return
   */
  @RequestMapping("roles")
  public List<String> findAll() {
    return StpUtil.getRoleList();
  }
}
